<?php

namespace Seguridad\Controller\Service;

use Zend\Db\Adapter\Adapter;
use Componentes\Controller\UtilsArrayController;
use Seguridad\Model\Entity\BitacoraGeneral;
use Seguridad\Controller\Service\GenericService;
use Seguridad\Controller\Service\GrupoService;
use Seguridad\Model\Dao\BitacoraGeneralDAO;

//SERVICIO
class BitacoraGeneralService extends GenericService {

    /**
     * @var Zend\Db\Adapter\Adapter 
     */
    private $dbAdapter;
    private static $bitacoraGeneralService;

    /**
     * @param \Zend\Db\Adapter\Adapter $dbAdapter
     */
    private function __construct(Adapter $dbAdapter) {
        $this->dbAdapter = $dbAdapter;
    }

    public static function getInstance($adapter) {
        if (self::$bitacoraGeneralService == null) {
            self::$bitacoraGeneralService = new BitacoraGeneralService($adapter);
        }
        return self::$bitacoraGeneralService;
    }

    public function getBitacoraGeneralDao() {
        return BitacoraGeneralDAO::getInstance($this->dbAdapter);
    }

    /**
     * @param type $id
     * @return type
     */
    public function getRegistro($id) {
        $data = null;
        $success = false;
        $bitacora = $this->obtenerBitacoraGeneralSegunId($id);
        if ($bitacora->getId() != null) {
            $data[0] = $bitacora->objectToArray();
            $success = true;
        }
        return UtilsArrayController::organizarOutput($success, $data, null);
    }

//------Retornan los objetos-------

    public function obtenerBitacoraGeneralSegunId($id) {
        $registros = $this->getBitacoraGeneralDao()->getRegistro($id);
        $data = UtilsArrayController::llenarData($registros);
        $bitacora = new BitacoraGeneral($data[0]);
        return $bitacora;
    }

//---------------------------------

    /**
     * @param type $data
     * @return type
     */
    public function createRegistro($data) {
        $registros = $this->getBitacoraGeneralDao()->createRegistro($data);
        return $registros;
    }

    /**
     * @param type $data
     * @return type
     */
    public function obtenerSiguienteId() {
        $registros = $this->getBitacoraGeneralDao()->contarRegistros();
        $data = UtilsArrayController::llenarData($registros);
        return $data[0]['num'] + 1;
    }

    /**
     * @param type $id
     * @return type
     */
//    public function deleteRegistro($id) {
//        $bitacoraDAO = new \Seguridad\Model\Dao\BitacoraGeneralDAO($this->dbAdapter);
//        $result = $bitacoraDAO->deleteRegistro($id);
//        return $result;
//    }

    /**
     * @param type $id
     * @param type $data
     * @return type
     */
//    public function updateRegistro($id, $data) {
//        $bitacoraDAO = new \Seguridad\Model\Dao\BitacoraGeneralDAO($this->dbAdapter);
//        $result = $bitacoraDAO->updateRegistro($id, $data);
//        return $result;
//    }

    /**
     * @param type $data
     * @return type
     */
//    public function createRegistro($data) {
//        $bitacoraDAO = new \Seguridad\Model\Dao\BitacoraGeneralDAO($this->dbAdapter);
//        $result = $bitacoraDAO->createRegistro($data);
//        return $result;
//    }

    /**
     * @param type int
     * @return array
     */
//    public function getTablas($limit) {
//        $bitacoraDAO = new \Seguridad\Model\Dao\BitacoraGeneralDAO($this->dbAdapter);
//        $tablas = $bitacoraDAO->findByPosition($limit);
//        return $tablas;
//    }
}
